En el escenario del C++, cada objeto tiene una duración de vida—la vida del objeto. Esto define la duración durante la cual un objeto ocupa espacio en memoria. Dentro de un cuerpo de función, el comportamiento predeterminado para variables locales es ser automática, pero podemos ordenarles que sean estática para cambiar su destino.
1. Objetos Automáticos
Por defecto, las variables locales son objetos automáticos. Nacen (se inicializan) cuando la función ejecución alcanza su definición y mueren (se recuperan) cuando finaliza el bloque. Residen en la pila, lo que las hace frescas para cada llamada.
2. Objetos Estáticos Locales
Cuando usas la estática palabra clave, creas un objeto estático local. Se inicializan solo una vez—antes de la primera vez que el control pasa por su definición—y permanecen vivos hasta que termina el programa. Esto permite a una función "recordar" un estado sin contaminar el ámbito global.
3. La Trampa de la Recursividad
En una función recursiva, cada bucle recursivo crea una instancia distinta de sus objetos automáticos. Si la recursividad es profunda, esto consume un espacio significativo en la pila. Por el contrario, un estática objeto se comparte entre todos los niveles de esa recursividad.